package Dados.SqlServer;

import java.awt.TextField;
import java.sql.Connection;


import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import Dados.BancoSql;
import Dados.IDAOProduto;
import Negocio.Produto;
import Apresentacao.*;

public class DAOProduto implements IDAOProduto {
	
	public static DAOProduto daoproduto = null;
	
	private DAOProduto(){
		
	}
	
	public static DAOProduto getInstance(){
		if(daoproduto==null){
			daoproduto = new DAOProduto ();
		}
		return daoproduto;
	}

	public void  cadastrarProduto (Produto produto){
		String comando;
		
		try{
			BancoSql conexao = new BancoSql();
			conexao.AbrirConexao();
			comando = "insert into produto";
			comando = comando + "(descricao_produto,unidade_do_Produto,precoUnitario,nome)";
			comando = comando + "values";
			comando = comando + "('" + produto.getDescricao() + "',";
			comando = comando + "'" + produto.getUnidadeDoProduto() + "',";
			comando = comando + "'" + produto.getPrecoUnitario()+ "',";
			comando = comando + "'" + produto.getNome()+ "');";
			conexao.ExecutaComando(comando);
			JOptionPane.showMessageDialog(null, "Cadastro Realizado com sucesso");
			conexao.FecharConexao();
			
		}catch(RuntimeException e){
			JOptionPane.showMessageDialog(null, "Erro no cadastro"+ e);
		}
		
		 
	}

	@Override
	public void alterarProduto(Produto produto) {
		String comando;
		
		try{
			BancoSql conexao = new BancoSql();
			conexao.AbrirConexao();
			comando = "update Produto set ";
			comando=comando  + "descricao_produto = " + "'" + ( produto.getDescricao()) + "',";
			comando=comando + "unidade_do_Produto = " + (produto.getUnidadeDoProduto()) + ",";
			comando=comando + " precoUnitario = " +  (produto.getPrecoUnitario()) + ",";
			comando=comando + " nome = " + "'" +(produto.getNome()) + "'";
			comando = comando + "Where codigo_produto = " + produto.getCodigo();
			conexao.ExecutaComando(comando);
			JOptionPane.showMessageDialog(null,"Alteracao Realizada com Sucesso" );
			conexao.FecharConexao();
        }catch(RuntimeException e){
			JOptionPane.showMessageDialog(null,"Erro na alteracao");
			
		}
	
	}

	public Produto consultarProduto(Produto produto) {
		
	return produto;
		
		
		/*	String comando;
		
		try{
		BancoSql conexao = new BancoSql();
		conexao.AbrirConexao();
		comando= "select * from Produtos where nome=?";
	
		comando = comando +(produto.getDescricao());
		comando = comando + (produto.getUnidadeDoProduto());
		comando = comando + (produto.getPrecoUnitario());
		comando = comando + (produto.getNome());
		conexao.ExecutaComando(comando);
		conexao.FecharConexao();
		
		conexao.FecharConexao();
		}catch(Exception e){
			JOptionPane.showMessageDialog(null, "Erro na conexao");
		}
	*/
	
	}

	@Override
	public void excluirProduto(Produto produto) {
		String comando;
		try{
			BancoSql conexao = new BancoSql();
			conexao.AbrirConexao();
			comando = "delete from Produto where codigo_produto = " + produto.getCodigo();
			conexao.ExecutaComando(comando);
			JOptionPane.showMessageDialog(null,"Produto Excluido com Sucesso" );
			conexao.FecharConexao();
			
		}catch (RuntimeException e){
			JOptionPane.showMessageDialog(null, "Erro na conexao" );
		}
		
		
	}

}



//comando= "select * from Produtos where nome=?";

//PreparedStatement ps = conn.prepareStatement(nome)  ;

//ResultSet rs = conexao.ExecutaComandoRetorno(comando);


/* 
comando = comando + (nome.getDescricao());
comando = comando +(nome.getUnidadeDoProduto());
comando = comando + (nome.getPrecoUnitario());
comando = comando + (nome.getNome());
*/


// percorrer o resultset adicionando cada produto criado na lista
/*	while(rs.next()) {
	String nomeProduto = rs.getString("nome");
	String preco = rs.getString("preco_unitario");
	String unidadeDoProduto = rs.getString("unidade_do_produto");
	String descricao = rs.getString("descricao_produto");
	
	Produto p = new Produto();
	
	p.setDescricao(descricao);
	p.setUnidadeDoProduto(Integer.parseInt(unidadeDoProduto));
	p.setPrecoUnitario(Double.parseDouble(preco));
	p.setNome(nomeProduto);
	
	lista.add(p);
}*/